package com.rw.coco.api.reply.mapper;

import com.rw.coco.handler.message.event.CocoGroupMessageEvent;
import com.rw.coco.handler.message.event.CocoMessageEvent;
import com.rw.coco.handler.message.event.CocoPrivateMessageEvent;

/**
 * 高级设置类回复
 */
public interface AdvancedReply {
    /**
     * 退群时的回复
     *
     * @param event 消息事件
     */
    String dismissGroup(CocoGroupMessageEvent event);

    /**
     * 删除好友时的回复
     *
     * @param event 消息事件
     */
    String dismissPrivate(CocoPrivateMessageEvent event);

    /**
     * 群聊消息超频警告
     *
     * @param event        消息事件
     * @param warnExceeded 超频次数
     * @param maxWarnCount 最大超频次数
     */
    String groupFreqExceededWarn(CocoGroupMessageEvent event, int warnExceeded, int maxWarnCount);

    /**
     * 群聊消息超频警告无效，退群回复
     *
     * @param event        消息事件
     * @param maxWarnCount 最大超频次数
     */
    String groupFreqExceeded(CocoGroupMessageEvent event, int maxWarnCount);

    /**
     * 私聊消息超频警告
     *
     * @param event        私聊事件
     * @param warnExceeded 超频次数
     * @param maxWarnCount 最大超频次数
     */
    String privateFreqExceededWarn(CocoPrivateMessageEvent event, int warnExceeded, int maxWarnCount);

    /**
     * 私聊消息超频警告无效，删好友回复
     *
     * @param event        私聊事件
     * @param maxWarnCount 最大超频次数
     */
    String privateFreqExceeded(CocoPrivateMessageEvent event, int maxWarnCount);

    /**
     * 机器人开启群聊回复
     *
     * @param event 群聊事件
     */
    String botOn(CocoGroupMessageEvent event);

    /**
     * 机器人关闭群聊回复
     *
     * @param event 群聊事件
     */
    String botOff(CocoGroupMessageEvent event);

    /**
     * 机器人开启群聊，但是已经开启的回复
     *
     * @param event 群聊事件
     */
    String botAlreadyOn(CocoGroupMessageEvent event);

    /**
     * 机器人开启群聊，但开启人没有权限
     *
     * @param event 群聊事件
     */
    String botOnWithoutAuthorize(CocoGroupMessageEvent event);

    /**
     * 机器人关闭群聊，但是没有关闭权限
     *
     * @param event 群聊事件
     */
    String botOffWithoutAuthorize(CocoGroupMessageEvent event);

    /**
     * 机器人总开关开启的回复
     *
     * @param event 群聊事件
     */
    String botSwitchOn(CocoMessageEvent event);

    /**
     * 机器人总开关开启，但已经开启
     *
     * @param event 群聊事件
     */
    String botSwitchAlreadyOn(CocoMessageEvent event);

    /**
     * 机器人总开关关闭的回复
     *
     * @param event 群聊事件
     */
    String botSwitchOff(CocoMessageEvent event);

    /**
     * 机器人总开关关闭，但是已经关闭
     *
     * @param event 群聊事件
     */
    String botSwitchAlreadyOff(CocoMessageEvent event);

    /**
     * 将用户加入黑名单
     *
     * @param event  聊天事件
     * @param userId 用户ID
     */
    String blackUser(CocoMessageEvent event, String userId);

    /**
     * 将用户加入白名单
     *
     * @param event  聊天事件
     * @param userId 用户ID
     */
    String whiteUser(CocoMessageEvent event, String userId);

    /**
     * 将群组加入黑名单
     *
     * @param event  聊天事件
     * @param id 群组ID
     */
    String blackGroup(CocoMessageEvent event, String id);

    /**
     * 将群组加入白名单
     *
     * @param event  聊天事件
     * @param id 群组ID
     */
    String whiteGroup(CocoMessageEvent event, String id);
}
